/* 
```
+ 绑定合适的事件处理函数，实现以下逻辑：

+ 当用户勾上“全选”时，自动选中所有语言，并把“全选”变成“全不选”；

+ 当用户去掉“全不选”时，自动不选中所有语言；

+ 当用户点击“反选”时，自动把所有语言状态反转（选中的变为未选，未选的变为选中）；

+ 当用户把所有语言都手动勾上时，“全选”被自动勾上，并变为“全不选”；

+ 当用户手动去掉选中至少一种语言时，“全不选”自动被去掉选中，并变为“全选”。
```
 */
'use strict'

var 
form=$('#test-form'),
 langs=form.find('[name=lang]'),
  selectAll=form.find('label.selectAll:checkbox'),
 selectAllLable=form.find('lable.selectAll span.selectAll'),
  deselectAllLabel=form.find('lable.selectAll span.deselectAll'),
 invertSelect=form.find('a.invertSelect');


//重置初始化状态：
form.find('*').show().off();
form.find(':checkbox').prop('checked',false).off();

deselectAllLabel.hide();

//拦截form提交事件：

form.off().submit(function(a){
    a.preventDefault();
    alert(form.serialize);
});


// 1. 当用户勾上“全选”时，自动选中所有语言，并把“全选”变成“全不选”
// 2. 当用户去掉“全不选”时，自动不选中所有语言
// 获取全选、全不选勾选框的状态

selectAll.change(function () {
    //如果是已勾选就判断
    if (this.checked) {
        //选中所有语言
        langs.prop('checked',true);

        //将全选隐藏起来
        selectAllLable.hide();

        //将全不选显示出来

        deselectAllLabel.show();

    }else{
        //取消选中所有语言
        langs.prop('checked',false);

        //将全选显示
        selectAllLable.show();

        //将全不选隐藏

        deselectAllLabel.hide();
    }
})


//3.当用户点击“反选”时，自动把所有语言状态反转（选中的变为未选，未选的变为选中）
invertSelect.click(function () {
    // 当用户点击“反选”时，如果全选框是勾选上的，就将全选框取消勾选，并改为“全不选”，并取消所有勾选

    if (selectAll.checked=true) {
        selectAll.prop('checked',false);
        selectAllLable.show();
        deselectAllLabel.hide();
    }
    // 当用户点击“反选”时，如果所有语言都未选中，将全选框勾选上，勾选所有语言，并将“全选”改为“全不选”
    if (langs.not(':checked').length==5) {
        selectAll.prop('checked',true);
        selectAllLable.hide();
        deselectAllLabel.show();
    }
    //遍历所有语言
    langs.each(function () {
        //判断是否是选中状态，如果是选中状态
        if (this.checked) {
            //将未选中的状态改为未选中
            $(this).prop('checked',false)
        }else{
            //将为选中的改为选中
            $(this).prop('checked',true);
        }
    });
});


// 4. 当用户把所有语言都手动勾上时，“全选”被自动勾上，并变为“全不选”

//获取语言的总个数
var countlong=langs.length;

//设置初始勾选了0个

var count=0;

//遍历每一个语言
langs.each(function () {
    //如果勾选上了
    if (this.checked) {
        //勾选个数自增
        
    }
})
